/**
 *
 */
package com.shiehub.sdk.opengw.encrypt;

import java.security.MessageDigest;

/**
 * @Description: MD5加密
 * @Author: guoleijie@shie.com.cn
 * @Since: 创建时间 2016年12月12日 上午11:00:43
 */
public class MD5Util {

  public final static String md5(String s) {
    char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E',
        'F'};
    try {
      byte[] btInput = s.getBytes("UTF-8");
      // 获得MD5摘要算法的 MessageDigest 对象
      MessageDigest mdInst = MessageDigest.getInstance("MD5");
      // 使用指定的字节更新摘要
      mdInst.update(btInput);
      // 获得密文
      byte[] md = mdInst.digest();
      // 把密文转换成十六进制的字符串形式
      int j = md.length;
      char str[] = new char[j * 2];
      int k = 0;
      for (int i = 0; i < j; i++) {
        byte byte0 = md[i];
        str[k++] = hexDigits[byte0 >>> 4 & 0xf];
        str[k++] = hexDigits[byte0 & 0xf];
      }
      return new String(str);
    } catch (Exception e) {

      return null;
    }
  }

  public static void main(String[] args) throws Exception {
    String str = "1.0|0|21101|F|20161122|145435|20161122021135|6217255005700009033|黎秀娟|22222222|CNY|";
    String newStr = new String(str.getBytes("GBK"), "UTF-8");
    System.out.println(md5(newStr));
  }
}
